package com.itheima.d3_abstract.demo1;

/*
目标：掌握抽象类和抽象方法的定义、以及基本使用
 */
public class Demo {
    public static void main(String[] args) {
        /**
         * 抽象：abstract，可以用来修饰类和方法，被修饰的类叫抽象类，被修饰的方法叫抽象方法
         *
         * 注意：
         *     抽象方法没有方法体
         *     有抽象方法的类一定是抽象类，但是抽象类可以没有抽象方法
         *     抽象类不能创建对象，抽象类是作为父类使用的
         *     子类继承抽象类，必须重写它所有的抽象方法，否则子类也得是抽象类
         *
         * 需求：定义Animal动物类，给它定义喝水和吃饭的功能，并合理使用Animal类
         */
        //1.按需求定义Animal抽象类

        //2.使用Animal抽象类，当成父类使用！
        //尝试创建抽象类的对象，代码报错！
        //Animal animal = new Animal();

        //3.定义子类，去继承抽象的父类！还必须重写父类所有的抽象方法！
        //定义一个Dog类，继承Animal动物类

        //4.测试子类对象的功能
        Dog dog = new Dog();
        dog.drink();
        dog.eat();

//         抽象类的使用场景：当定义一个方法时，发现无法指定具体的方法内容，就定义成抽象方法！
//         抽象方法的作用：定义成抽象方法之后，就相当于限制了子类必须拥有这个功能，但是却让子类自己去实现
//         抽象类的作用：当成父类使用，利用抽象方法给子类指定规范（你必须拥有什么功能，功能必须叫什么！）
    }
}
